@echo off
:: 设置UTF-8编码支持
chcp 65001 >nul 2>&1
setlocal enabledelayedexpansion

:: 设置控制台属性以更好支持UTF-8
for /f "tokens=2 delims=:" %%a in ('chcp') do set "original_cp=%%a"
set "original_cp=!original_cp: =!"

title Builder.Alyr.Net 智能依赖安装器 [UTF-8]

echo ================================================
echo  🚀 Builder.Alyr.Net 智能依赖安装器 [UTF-8版本]
echo  📅 版权所有: (c) 2020-2025 ALYR.NET
echo  🌐 编码格式: UTF-8 (65001)
echo ================================================
echo.

:: 显示当前编码信息
echo 📋 系统信息:
echo    当前代码页: %original_cp% → 65001 (UTF-8)
echo    脚本版本: UTF-8 优化版
echo    执行时间: %date% %time%
echo.

echo 🔍 检测重复安装进程...
tasklist | findstr /i "npm.exe node.exe" >nul 2>&1
if !errorlevel! equ 0 (
    echo ⚠️  检测到正在运行的安装进程！
    echo 🛑 强制停止所有相关进程...
    taskkill /f /im node.exe >nul 2>&1
    taskkill /f /im npm.exe >nul 2>&1
    taskkill /f /im yarn.exe >nul 2>&1
    taskkill /f /im pnpm.exe >nul 2>&1
    echo ✅ 进程清理完成
    timeout /t 3 >nul
) else (
    echo ✅ 未检测到冲突进程
)

echo 🔧 执行安全清理...
taskkill /f /im node.exe >nul 2>&1
taskkill /f /im npm.exe >nul 2>&1
timeout /t 2 >nul

echo 🔒 检查安装锁定状态...
if exist ".install.lock" (
    echo ⚠️  检测到安装锁定文件！
    echo 🛑 强制解除锁定并清理残留进程...
    del ".install.lock" >nul 2>&1
    taskkill /f /im node.exe >nul 2>&1
    taskkill /f /im npm.exe >nul 2>&1
    echo ✅ 锁定已解除
)

echo 🔍 正在安装项目依赖...
echo.

:: 切换到脚本所在目录
cd /d "%~dp0"

echo 🔒 创建安装锁定...
echo 安装开始时间: %date% %time% > ".install.lock"
echo 编码格式: UTF-8 >> ".install.lock"

echo 📦 开始执行依赖安装...
echo ⏱️  使用快速安装模式 (UTF-8优化)...
echo.

:: 设置npm配置以支持UTF-8
set "npm_config_unicode=true"
set "npm_config_progress=true"

:: 使用更激进的参数避免卡顿，并支持UTF-8
npm install --no-optional --prefer-offline --no-audit --no-fund --silent --timeout=30000 --unicode

set "install_result=!errorlevel!"

if !install_result! neq 0 (
    echo.
    echo ❌ 依赖安装失败！ (错误代码: !install_result!)
    echo 🛑 强制清理可能的残留进程...
    taskkill /f /im node.exe >nul 2>&1
    taskkill /f /im npm.exe >nul 2>&1
    echo.
    echo 💡 可能的解决方案:
    echo    1. 检查网络连接状态
    echo    2. 清理 npm 缓存: npm cache clean --force
    echo    3. 删除 node_modules 文件夹后重试
    echo    4. 使用国内镜像: npm install --registry https://registry.npmmirror.com
    echo    5. 检查UTF-8编码支持: chcp 65001
    echo.
    del ".install.lock" >nul 2>&1
    goto end
)

echo 🔓 移除安装锁定...
del ".install.lock" >nul 2>&1

echo.
echo ✅ 依赖安装完成！ (UTF-8编码支持)
echo 📊 安装统计信息:
for /f %%i in ('dir /b /ad node_modules 2^>nul ^| find /c /v ""') do (
    echo    📦 已安装 %%i+ 个核心依赖包
)
if exist "node_modules" (
    echo    ✓ node_modules 目录已创建
    for %%F in (node_modules) do (
        echo    📁 目录大小: %%~zF 字节
    )
) else (
    echo    ✗ node_modules 目录创建失败
)

echo.
echo 🚀 项目启动命令 (UTF-8支持):
echo    npm start          # 启动开发服务器
echo    npm run build      # 构建生产版本  
echo    npm test           # 运行测试
echo    npm run dev        # 开发模式
echo.
echo 🌐 UTF-8编码信息:
echo    原始代码页: %original_cp%
echo    当前代码页: 65001 (UTF-8)
echo    中文支持: ✅ 完全支持
echo.

:end
echo 📋 批处理执行完成 [UTF-8版本]
echo ⏰ 完成时间: %date% %time%
echo 🔄 窗口将在3秒后自动关闭...
timeout /t 3 >nul

:: 恢复原始代码页（可选）
:: chcp %original_cp% >nul 2>&1